package controller;

import java.text.SimpleDateFormat;
import javax.swing.table.DefaultTableModel;
import model.Filme;
import model.Sessao;
import model.SessoesModel;
import view.VendaIngressoView;

/**
 * @author Lucas Amaral
 */
public class VendaIngressoController {
    private VendaIngressoView view;
    private SessoesModel model;
    
    public VendaIngressoController(VendaIngressoView v, SessoesModel m) {
        view = v;
        model = m;
    }
    
    public void listarFilmes(Boolean emCartaz) {
        for (Filme filme: model.getFilmes().values()) {
            if (emCartaz == false || emCartaz == true && filme.getEmCartaz()) {
                view.jComboBoxFilme.addItem(filme.getNome());
            }
        }
    }
    
    public Filme buscarFilme(String nomeFilme) {
        for (Filme filme: model.getFilmes().values()) {
            if (filme.getNome().equals(nomeFilme)) {
                return filme;
            }
        }
        return null;
    }
    
    public Sessao buscarSessão(Integer id) {
        for (Sessao sessão: model.getSessões()) {
            if (sessão.getId() == id) {
                return sessão;
            }
        }
        return null;
    }
    
    public String venderIngressoSessao(Integer idSessão, String strQuantidade) {
        Sessao sessão = buscarSessão(idSessão);
        if ((sessão.getQtdIngressosVendidos() + Integer.valueOf(strQuantidade)) <= sessão.getSala().getCapacidade()) {
            sessão.setQtdIngressosVendidos(sessão.getQtdIngressosVendidos() + Integer.valueOf(strQuantidade));
            model.alterarSessão(sessão);
            return "Ingresso vendido com sucesso";
        }
        return "Impossível realizar venda, verifique se o numero de ingressos desejados não ultrapassa o limite da sessão";        
    } 
    
    public void consultarFilmesSessoes(String nomeFilme) {
        DefaultTableModel modelo =((DefaultTableModel) view.jTableTabelaResultado.getModel());
        int linha=0;
        modelo.setRowCount(0);
        modelo.setColumnCount(0);
        modelo.addColumn("Id Sessão");
        modelo.addColumn("Numero sala");
        modelo.addColumn("Data");
        modelo.addColumn("Ingressos restantes"); 
        for (Sessao sessao: model.getSessões()) {
            if (sessao.getFilme() == buscarFilme(nomeFilme)) {
                modelo.addRow(new String[] {});
                view.jTableTabelaResultado.setValueAt(sessao.getId(), linha, 0);
                view.jTableTabelaResultado.setValueAt(sessao.getSala().getNumero(), linha, 1);
                view.jTableTabelaResultado.setValueAt(new SimpleDateFormat("dd/MM/yyyy hh:mm").format(sessao.getData()), linha, 2);
                view.jTableTabelaResultado.setValueAt(sessao.getQtdIngressosRestantes(), linha, 3);
                linha++;
            }
        }
    }
    
}
